Software Engineering Topics
1. Software Crisis
Definition: Software Crisis refers to the set of problems faced by the software industry during the
1960s and 70s due to the rapid increase in computer power and software complexity.
Key Issues:
- Projects running over budget.
- Missed deadlines.
- Unmaintainable and low-quality software.
- Failure to meet user requirements.
- Difficulty in managing complex systems.
Causes:
- Lack of proper project management.
- Poor communication between stakeholders.
- Inadequate requirements gathering.
- No standard process for software development.
Solution:
The introduction of Software Development Life Cycle (SDLC) and Software Engineering
principles helped in overcoming the software crisis.
2. Software Life Cycle Models
Definition: Software Life Cycle Models describe the process of software development in phases and
how these phases are organized. Each model has its own set of strengths and weaknesses and is suitable for different
kinds of projects.
3. Waterfall Model
Requirements → Design → Implementation → Testing → Deployment → Maintenance
Description: A linear and sequential model. Each phase must be completed before the next begins.
Works best for well-defined projects with clear requirements.
Phases:
- Requirements: Gather user needs.
- Design: System architecture is designed.
- Implementation: Code is developed.
- Testing: The system is tested for bugs.
- Deployment: System is released to users.
- Maintenance: Bug fixes and upgrades are done.
Advantages:
- Simple and easy to understand.
- Well-structured.
- Good for smaller projects.
Disadvantages:
- Inflexible to changes.
- Late discovery of issues.
- Not suitable for complex or evolving projects.
4. Prototype Model
Requirements → Quick Design → Build Prototype → Customer Evaluation → Refinement → Final Product
Description: Focuses on building a working prototype early. Used to understand customer requirements
better. Repeated feedback and refinement are central.
Process:
- Initial requirements are gathered.
- A quick prototype is developed.
- Customer evaluates and gives feedback.
- Prototype is refined.
- After final approval, full system is developed.
Advantages:
- Better requirement understanding.
- Increased user involvement.
- Reduces risk of failure.
Disadvantages:
- May lead to scope creep.
- Not suitable for large systems.
- Temporary prototype might be mistaken for final system.
5. Spiral Model
(Each loop represents a phase)
Planning → Risk Analysis → Engineering → Evaluation → (repeat in spiral fashion)
Description: Combines iterative nature of prototyping and systematic approach of waterfall.
Emphasizes risk analysis and refinement. Suitable for large, complex, and high-risk projects.
Phases (in each iteration):
- Planning: Objectives, alternatives, constraints.
- Risk Analysis: Identify and resolve risks.
- Engineering: Develop and test.
- Evaluation: Customer reviews the work.
Advantages:
- Excellent for risk management.
- Flexible and iterative.
- Suitable for large projects.
Disadvantages:
- Expensive and time-consuming.
- Requires expertise in risk analysis.
- Not suitable for small projects.
6. Agile Model
Concept → Iteration 1 → Iteration 2 → ... → Final Product
Each iteration: Planning → Design → Development → Testing → Review
Description: Based on iterative and incremental development. Focuses on customer collaboration,
working software, and response to change. Teams work in short sprints (typically 1–4 weeks).
Agile Principles:
- Individuals and interactions over processes.
- Working software over documentation.
- Customer collaboration over contract negotiation.
- Responding to change over following a plan.
Advantages:
- High customer satisfaction.
- Early delivery of working software.
- Embraces changing requirements.
Disadvantages:
- Requires active user involvement.
- Less documentation.
- Difficult to predict effort and time.